Many computer programs interface directly with humans, and many interface directly with other programs. Some do both. Among programs that interface directly with humans, some programs are used primarily by experts in computing science or another technical field, while other programs are used primarily by people who are not expert, so far as computer program interactions are concerned, although they may be experts in other ways.
Interfaces for such computing non-experts often include graphical user interface components such as drop-down menus, buttons, scroll bars, sliders, resizable windows, use of color as an indicator, and some kind of pointer device mechanism such as a mouse, stylus, or touch screen. Due to rendering differences, constrained navigation paths and I/O options, and other differences, such graphical user interfaces are often difficult to automate. A particular sequence of instructions to a graphical user interface may be captured or stored as a sequence of pointer device movements that depend heavily on particular screen renderings that determine the location of menus, buttons, click or drag locations, and other components and interactions.
One widely used kind of expert program interface is the “command line interface”, also known as a “console user interface”. The interface is provided by a program that is called a “command line interpreter”, “command language interpreter”, or “shell” in some situations. This program presents a textual prompt. The user, who can be either a human or another program, supplies a textual command line in response to the prompt. The command line text typically begins with the name of a command, which is a program in its own right, and the command line often includes textual arguments to the command. Arguments recognized by a command may include subcommands which in turn have their own set of recognized arguments. In many cases, arguments may be either optional or required. The number of different valid command lines possible on a given commercial or academic or institutional system often numbers in the tens of thousands or even more.